home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 63.zip
/
BS1 part 63
/
Hisoft Basic AGA v1.04D d2.adf
/
Dreier.bas
< prev
next >
Wrap
BASIC Source File
|
1989-05-18
|
4KB
|
138 lines
'" dreierneu
'" Demo schnelles Flächenfüllen
'" P. Kittel, CBM Ffm, 4.4.87, 18.6.88
CLEAR,4000
CLEAR,7500
sc&=PEEKL(WINDOW(7) + 46) '" Screen-Struktur
Hoehe=PEEKW(sc&+14):PRINT '" Screen-Höhe
IF Hoehe=256 THEN
ym=250:y1=140:y0=58:ye=119:zl=29:PRINT "PAL-Schirm"
ELSE
ym=200:y1=105:y0=45:ye= 93:zl=23:PRINT "NTSC-Schirm"
END IF
PRINT
PRINT "Der Farbzyklus ist hier durch fz=0 (bzw. a$=";CHR$(34);"o";CHR$(34);")"
PRINT "lahmgelegt, er ist nur bei Compilation"
PRINT "sinnvoll, weil er sehr zeitaufwendig ist."
a$="o"
'" PRINT "Mit(m) oder ohne(o) Farbzyklus ? ";
'" a$="":WHILE a$<>"m" AND a$<>"o":a$=INKEY$:WEND
'" PRINT a$:PRINT
fz=a$="m"
SCREEN 1,570,ym,4,2
WINDOW 2," Demo schnelles Füllen von Dreiecksflächen, Ende mit q ",(0,0)-(500,ym-15),0,1
x1=250
x2=290:y2=y1
z1=0 :z2=0
co=2
nn=15
DIM pr(nn),pg(nn),pb(nn),pra(nn+1),pga(nn+1),pba(nn+1)
FOR i=2 TO nn:PALETTE i,0,0,0:NEXT
fr=0:fg=0:fb=0:pf=0:ff=4000:fs=0:c7=7/15:c6=15*16:c2=15*256
cc=0:cf=1:co2=0
PALETTE 0,.5,.5,.5
COLOR 1
LOCATE 1,2:PRINT "Schnelle";: LOCATE 1 ,50:PRINT "Flächenfüllen";
LOCATE 2,2:PRINT "Grafik" ;: LOCATE 2 ,52:PRINT "mit Blitter";
LOCATE zl-1,58:PRINT "Bitte";
LOCATE zl ,51:PRINT "vergleichen!";
IF fz THEN
LOCATE zl/2-1,25:PRINT "Bitte etwas Geduld...";
END IF
COLOR 2
LOCATE zl-1,2:PRINT "4096";
LOCATE zl ,2:PRINT "Farbtöne";
'" Die Art der Farbweiterschaltung wird
'" durch die Variablen fs und ff in
'" späteren Zeilen bestimmt.
'" Hier ist viel Raum für eigene
'" Experimente.
WHILE INKEY$<>"q" ' Endlosschleife bis q-Taste
x3=x2 :y3=y2
z1=z1+.01 :IF z1>6.28 THEN z1=0
z2=z2+.03*SIN(z1) :IF z2>6.28 THEN z2=0
z3=z3+z1*SIN(z2)/4:IF z3>6.28 THEN z3=0
x2=INT(120*(1+SIN(z2))*COS(z3)+x1)
y2=INT( y0*(1+SIN(z2))*SIN(z3)+ye)
AREA (x1,y1):AREA (x2,y2):AREA (x3,y3)
IF fz=0 THEN
pra(co)=pr(co):pga(co)=pg(co):pba(co)=pb(co)
PALETTE co,pr(co),pg(co),pb(co)
END IF
'" Farbweiterschaltung
co=co+1:IF co>nn THEN
co=2
co2=co2+1
IF co2>1 OR fz=0 THEN
co2=0
fs=fs+.1:IF fs>7 THEN fs=fs-7
ff=ff+273.16*(1+COS(fs)*1.02):IF ff>4095 THEN ff=ff-4095
fi=INT(ff)
ar=fr:ag=fg:ab=fb
fr=(fi AND 15)/15
fg=(fi AND 15*16 )/c6
fb=(fi AND 15*256)/c2
pr(15)=fr:pg(15)=fg:pb(15)=fb ' neue Farbe
cc=cc+1:IF cc>20 THEN cc=0:cf=-cf
IF cf*(fr+ar)>cf THEN
fr2=2-fr:m=(fr2-ar)/14:a=ar-m
FOR i=2 TO 14:pr(i)=a+i*m:IF pr(i)>1 THEN pr(i)=2-pr(i)
NEXT
ELSE
fr2=-fr:m=(fr2-ar)/14:a=ar-m
FOR i=2 TO 14:pr(i)=a+i*m:IF pr(i)<0 THEN pr(i)=-pr(i)
NEXT
END IF
IF cf*(fg+ag)>cf THEN
fg2=2-fg:m=(fg2-ag)/14:a=ag-m
FOR i=2 TO 14:pg(i)=a+i*m:IF pg(i)>1 THEN pg(i)=2-pg(i)
NEXT
ELSE
fg2=-fg:m=(fg2-ag)/14:a=ag-m
FOR i=2 TO 14:pg(i)=a+i*m:IF pg(i)<0 THEN pg(i)=-pg(i)
NEXT
END IF
IF cf*(fb+ab)>cf THEN
fb2=2-fb:m=(fb2-ab)/14:a=ab-m
FOR i=2 TO 14:pb(i)=a+i*m:IF pb(i)>1 THEN pb(i)=2-pb(i)
NEXT
ELSE
fb2=-fb:m=(fb2-ab)/14:a=ab-m
FOR i=2 TO 14:pb(i)=a+i*m:IF pb(i)<0 THEN pb(i)=-pb(i)
NEXT
END IF
END IF
END IF
IF fz THEN
'" Palette zyklisch umbelegen
FOR i=nn+1 TO 3 STEP -1
pra(i)=pra(i-1): pga(i)=pga(i-1): pba(i)=pba(i-1)
NEXT
pra(2)=pra(nn+1): pga(2)=pga(nn+1): pba(2)=pba(nn+1)
cd=2*co-2: IF cd>nn THEN cd=cd-nn+1
pra(cd)=pr(co): pga(cd)=pg(co): pba(cd)=pb(co)
FOR i=2 TO nn:PALETTE i,pra(i),pga(i),pba(i):NEXT
END IF
COLOR co
AREAFILL
WEND
'" Am Schluß sauber aufräumen
WINDOW CLOSE 2
SCREEN CLOSE 1
END